package com.weiyi.weiman.api;

import com.weiyi.weiman.domain.dto.ResultInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author zhang
 * @Date 2021/5/3 下午9:40
 * @Description 用户认证控制类
 * @Version 1.0
 **/
@Slf4j
@RestController
@RequestMapping("/auth")
public class AuthController {

    /**
     * 当通行令牌过期时，使用刷新令牌进行更新
     * @param refreshToken
     * @param request
     * @return
     */
    @GetMapping("/refresh")
    public ResultInfo refreshToken(@RequestParam("refresh_token")String refreshToken, HttpServletRequest request) {
//        String accessToken = request.getHeader("Authorization");
//        //通行令牌不合法
//        if (TokenStatus.INVALID.equals(JWTUtils.validateJWT(accessToken))) {
//            return ResultUtils.failureInfo(ResultStatus.ACCESS_TOKEN_ERROR);
//        }
//        //更新令牌不合法
//        if (TokenStatus.INVALID.equals(JWTUtils.validateJWT(refreshToken))) {
//            return ResultUtils.failureInfo(ResultStatus.REFRESH_TOKEN_ERROR);
//        }
//        //通行令牌过期，更新令牌有效
//        if (TokenStatus.SUCCESS.equals(JWTUtils.validateJWT(refreshToken))
//                && TokenStatus.EXPIRED.equals(JWTUtils.validateJWT(accessToken))) {
//            String subject = JWTUtils.parseJWT(accessToken).getSubject();
//            String new_access = JWTUtils.createAccessJWT(subject);
//            String new_fresh = JWTUtils.createRefreshJWT();
//            HashMap<String, String> map = new HashMap<>();
//            map.put("access_token", new_access);
//            map.put("refresh_token", new_fresh);
//            return ResultUtils.successInfo(map);
//        }
//        //通行令牌和更新令牌同时失效
//        if (TokenStatus.EXPIRED.equals(JWTUtils.validateJWT(refreshToken))
//                && TokenStatus.EXPIRED.equals(JWTUtils.validateJWT(accessToken))) {
//            return ResultUtils.failureInfo(ResultStatus.TOKEN_ERROR);
//        }
//        return ResultUtils.failureInfo(ResultStatus.ERROR);
        return null;
    }
}
